package com.shujia.thread_pool;

import java.util.concurrent.*;

public class ThreadPoolDemo2 {

    public static void main(String[] args) {
        ScheduledExecutorService threadPool = Executors.newScheduledThreadPool(3);
//        ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)：
//        指定callable任务将在delay延迟后执行。
        System.out.println("提交任务");
//        threadPool.schedule(new Callable<String>() {
//            @Override
//            public String call() throws Exception {
//                System.out.println("Callable...");
//                return null;
//            }
//        }, 2, TimeUnit.SECONDS);


//        ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)：指定command任务将在delay延迟后执行。
//        threadPool.schedule(new Runnable() {
//            @Override
//            public void run(){
//                System.out.println("Runnable...");
//            }
//        }, 3, TimeUnit.SECONDS);

//        ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)：
//        是以上一个任务开始的时间计时，period时间过去后，检测上一个任务是否执行完毕，如果上一个任务执行完毕，
//        则当前任务立即执行，如果上一个任务没有执行完毕，则需要等上一个任务执行完毕后立即执行。
//        threadPool.scheduleAtFixedRate(new Runnable() {
//            @Override
//            public void run() {
//                System.out.println("Runnable...");
//            }
//        }, 2, 1, TimeUnit.SECONDS);


//        ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)：
//        是以上一个任务结束时开始计时，period时间过去后，立即执行。
        threadPool.scheduleWithFixedDelay(new Runnable() {
            @Override
            public void run() {
                System.out.println("Runnable...");
            }
        }, 2, 1, TimeUnit.SECONDS);

        // threadPool.shutdown();

    }
}
